var mongoose = require('mongoose');
const DataModel = require('../models/cate.model');

//保存信息到数据库
exports.create= function (req,res,next) {
    const dataModel = new DataModel(req.body);
    dataModel.save()
        .then(data=>{
        res.json(data);
    })
}

//从数据库中查找信息
exports.get = function (req,res,next) {
    var id = req.params.id;

    DataModel.findById(id, function (err, data) {
        res.json(data);
    })
}

//更改数据库中的信息
exports.update = function (req,res,next) {
    const id = req.params.id;

    DataModel.findByIdAndUpdate(id,{$set:req.body},{new:false})
    //new:false表示找到就更新，找不到就新增
        .then(data=>{
            res.json(data); //输出的是修改前的数据
        })

}

//删除相应的数据
exports.remove = function (req,res,next) {
    const id = req.params.id;
    var ids = [];

    DataModel.findOne({_id:id},function (err,doc) {
        if(doc){
            ids = [doc._id];
            doc.getChildren().then(function (docs) {

                for(var i=0;i<docs.length;i++){
                    ids.push(docs[i]._id);
                }

                DataModel.remove({_id:{$in:ids}})
                    .then(data=>{
                        res.json({'msg':'deletes success','status':200});
                    })
            });
        }
    })

}

//递归
function reverseTree(data,pid) {
    var result = [],
        temp;
    var data = JSON.parse(JSON.stringify(data));
    //将一个DataModel的object转成了js的object

    for(var i in data){
        if(data[i].parentId == pid){
            result.push(data[i]);

            temp = reverseTree(data,data[i]._id);

            if(temp.length>0){
                data[i].children = temp;
            }
        }
    }
    return result;
}


//分页
exports.list = function (req,res,next) {
    DataModel.find({},function (err,data) {
        var reTree =reverseTree(data,null);
        res.json(reTree);
    })

}

//删除多条信息
exports.deletes = function (req,res,next){
    var ids = req.body.ids;
    if(ids.length>0){
        console.log(ids.split(','));
        DataModel.remove({_id:{$in:ids.split(',')}})
            .then(data=>{
                res.json({'msg':'delete success','status':200});
            })
    }else{
        res.json({'msg':'deletes fail','status':404});
    }
}

exports.children = function (req,res,next) {
    var Id = req.body.name;

    DataModel.findOne({_id:Id},function (err,doc){
        if(doc){
            ids = [doc._id];
            doc.getChildren().then(function (docs) {

                for(var i=0;i<docs.length;i++){
                    ids.push(docs[i]._id);
                }
                res.json(ids);
            });
        }

    })

}